import { defineStore } from 'pinia';

// 定义并导出用户状态 Store，id 为 "user"（全局唯一）
export const useUserStore = defineStore('user', {
  // 状态：存储 Token、用户信息等
  state: () => ({
    token: localStorage.getItem('token') || '', // Token 持久化到本地存储（刷新不丢失）
    userInfo: JSON.parse(localStorage.getItem('userInfo')) || null, // 用户信息（如姓名、权限）
  }),

  //  actions：修改状态的方法（同步/异步都支持）
  actions: {
    // 1. 存储 Token（登录成功后调用）
    setToken(token) {
      this.token = token;
      localStorage.setItem('token', token); // 同步到 localStorage，持久化
    },

    // 2. 存储用户信息（获取用户详情后调用）
    setUserInfo(info) {
      this.userInfo = info;
      localStorage.setItem('userInfo', JSON.stringify(info)); // 对象需转字符串存储
    },

    // 3. 清除用户状态（退出登录、Token 失效时调用）
    clearUser() {
      this.token = '';
      this.userInfo = null;
      // 清空本地存储，避免刷新后又恢复
      localStorage.removeItem('token');
      localStorage.removeItem('userInfo');
    },
  },
});